<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JS Drum Kit</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>


  <div class="keys">
    <div data-key="65" class="key">
      <kbd>A</kbd>
      <span class="sound">clap</span>
    </div>
    <div data-key="83" class="key">
      <kbd>S</kbd>
      <span class="sound">hihat</span>
    </div>
    <div data-key="68" class="key">
      <kbd>D</kbd>
      <span class="sound">kick</span>
    </div>
    <div data-key="70" class="key">
      <kbd>F</kbd>
      <span class="sound">openhat</span>
    </div>
    <div data-key="71" class="key">
      <kbd>G</kbd>
      <span class="sound">boom</span>
    </div>
    <div data-key="72" class="key">
      <kbd>H</kbd>
      <span class="sound">ride</span>
    </div>
    <div data-key="74" class="key">
      <kbd>J</kbd>
      <span class="sound">snare</span>
    </div>
    <div data-key="75" class="key">
      <kbd>K</kbd>
      <span class="sound">tom</span>
    </div>
    <div data-key="76" class="key">
      <kbd>L</kbd>
      <span class="sound">tink</span>
    </div>
  </div>

  <audio data-key="65" src="sounds/clap.wav"></audio>
  <audio data-key="83" src="sounds/hihat.wav"></audio>
  <audio data-key="68" src="sounds/kick.wav"></audio>
  <audio data-key="70" src="sounds/openhat.wav"></audio>
  <audio data-key="71" src="sounds/boom.wav"></audio>
  <audio data-key="72" src="sounds/ride.wav"></audio>
  <audio data-key="74" src="sounds/snare.wav"></audio>
  <audio data-key="75" src="sounds/tom.wav"></audio>
  <audio data-key="76" src="sounds/tink.wav"></audio>

<script>
  // 键盘事件 keydown: 当用户按下任意键时触发，而且按住不放的话，会重复触发此事件
  // keyup：放开时触发
// 1.按下按键，播放声音music
// 2.按下按键，改变按键的显示效果 dom style
// 3.按键效果转换之后，恢复到最初状态
// 匿名函数，主要利用函数内的变量作用域
// 避免产生全局变量，影响整体页面环境，增加代码的兼容性
(function(){
  // 触发执行
  function playHandle(e){
    // play music
    const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
    if(audio){
      // 一直重复播放,连续触发
      audio.currentTime = 0;
      audio.play();
    }
    // dom style
    const dom = document.querySelector(`div[data-key="${e.keyCode}"]`);
    // addClass 完成动画后 removeClass
    if(dom) dom.classList.add('playing');
    // console.log(e);
  }
  // removeClass 恢复 
  function removeTransition(e){
    if(e.propertyName === 'transform'){
      e.currentTarget.classList.remove('playing');
    }
      // console.log(e.currentTarget)
  }
  
  // 监听触发
  window.addEventListener('keydown',playHandle);
  
  document.querySelectorAll('.key').forEach(function(key){
    key.addEventListener('transitionend',removeTransition);
  })
  
  
})()

</script>


</body>
</html>
